/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package src.j2ee.compumake.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import src.j2ee.compumake.dominio.ComponentePedido;
import src.j2ee.compumake.dominio.Pedido;
import src.j2ee.compumake.dominio.Producto;
import src.j2ee.compumake.dominio.Sucursal;
import src.j2ee.compumake.dominio.Transferencia;

/************************************************************************
 **                                                                    **
 ** Nombre: DAOPedido.java                                             **
 ** Version: v1.0.0                                                    **
 ** Autor: amado.cante                                                 **
 ** Creado: 27/05/2013                                                 **
 ** Modificado:                                                        **
 ** Diagrama:                                                          **
 ** Caso de uso:                                                       **
 **                                                                    **
 ***********************************************************************/
public class DAOPedido {
    private static final String TABLA_PEDIDOS = "Pedidos";
    private static final String COLUMNA_ID = "idPedidos";
    private static final String USUARIO = "usuario";
    private static final String FECHA_SOLICITUD = "fechaSolicitud";
    private static final String FECHA_ENTREGA = "fechaEntrega";
    private static final String SUCURSAL = "sucursalEntrega";
    private static final String PRECIO = "precio";
    private Connection conexion;
    private AccesoBaseDatos acceso = new AccesoBaseDatos();

    public DAOPedido() {
        this.conexion = this.acceso.abrirConexion();
    }
    
    public Pedido registrarPedido(Pedido pedido){
        Pedido p = pedido;
        if(p.getPrecio()<=0.0){
            p.calcularPrecioPedido();
        }
        try{
            String query = "INSERT INTO "+TABLA_PEDIDOS+"("+USUARIO+","
                    +FECHA_SOLICITUD+","+SUCURSAL+","+PRECIO
                   +") VALUES('"+p.getUsuario().getNombreUsuario()+"','"
                    +p.getFechaSolicitud()+"','"
                    +p.getSucursalEntrega().getClaveSucursal()+"','"
                    +p.getPrecio()+"')";
            PreparedStatement sentencia = conexion.prepareStatement(query, Statement.RETURN_GENERATED_KEYS);
            int afectados = sentencia.executeUpdate(query, Statement.RETURN_GENERATED_KEYS);
            if(afectados!=0){
                ResultSet generado = sentencia.getGeneratedKeys();
                if(generado.next()){
                    int id = generado.getInt(1); 
                    p.setIdPedido(id);
                    DAOComponentePedido daoComponentesPedido = new DAOComponentePedido();
                    ArrayList<ComponentePedido> componentesRegistrados = daoComponentesPedido.registrarComponentes(pedido);
                    p.setComponentes(componentesRegistrados);
                    DAOTransferencia daoTransferencia = new DAOTransferencia();
                    for(int i=0;i<componentesRegistrados.size();i++){
                        String fecha = p.getFechaSolicitud();
                        ComponentePedido componente = componentesRegistrados.get(i);
                        Producto producto = componente.getProducto();
                        Sucursal sucursalOrigen=componente.getSucursalOrigen();
                        Sucursal sucursalDestino=p.getSucursalEntrega();
                        if(sucursalOrigen.getClaveSucursal()!=sucursalDestino.getClaveSucursal()){
                            Transferencia transferencia = new Transferencia(producto, fecha, sucursalOrigen, sucursalDestino);
                            daoTransferencia.insertarTransferencia(transferencia);
                        }
                    }
                    return p;
                }else{
                    return null;
                }
            }else{
                return null;
            }
        }catch(SQLException ex){
            return null;
        }
    }    
    
}
